package com.molichuxing.services.infrastructure.service;

import java.util.List;
import java.util.Map;

import com.molichuxing.framework.service.RootService;
import com.molichuxing.services.infrastructure.dto.request.create.OrderSubscribeSettlementCreateDto;
import com.molichuxing.services.infrastructure.dto.request.modify.OrderPayModifyDto;
import com.molichuxing.services.infrastructure.dto.request.modify.OrderSubscribeSettlementModifyDto;
import com.molichuxing.services.infrastructure.dto.response.OrderSubscribeSettlementDto;
import com.molichuxing.services.property.OrderSubscribeSettlementPayStatusEnum;

/**
 * <p>
 * 订阅订单结算表 服务类
 * </p>
 *
 * @author renzhengyu
 * @since 2019-08-12
 */
public interface OrderSubscribeSettlementService extends RootService {

	/**
	 * 获取订阅里程订单结算信息
	 * 
	 * @param orderCode
	 *            订单号
	 * @return
	 */
	public OrderSubscribeSettlementDto getOrderSubscribeSettlement(Long orderCode);

	/**
	 * 获取订阅里程订单结算信息
	 * 
	 * @param orderCode
	 *            订单号
	 * @param status
	 *            支付状态
	 * @return
	 */
	public OrderSubscribeSettlementDto getOrderSubscribeSettlement(Long orderCode,
			OrderSubscribeSettlementPayStatusEnum status);

	/**
	 * 支付完成修改结算信息
	 * 
	 * @param modifyDto
	 * @return
	 */
	public Boolean modifyPay(OrderPayModifyDto modifyDto);

	/**
	 * 新增
	 * 
	 * @param createDto
	 * @return
	 */
	public Boolean create(OrderSubscribeSettlementCreateDto createDto);

	/**
	 * pdi修改结算信息
	 * 
	 * @param modifyDto
	 * @return
	 */
	public Boolean modifyPdi(OrderSubscribeSettlementModifyDto modifyDto);

	/**
	 * 无费用结算修改
	 * 
	 * @param orderCode
	 * @return
	 */
	public Boolean modifySettlement(Long orderCode);

	/**
	 * 争议处理修改结算信息
	 * 
	 * @param modifyDto
	 * @return
	 */
	public Boolean modifyDisputeDisposals(OrderSubscribeSettlementModifyDto modifyDto);

	/**
	 * 查询订单结算信息
	 * 
	 * @param orderCodes
	 *            订单号
	 * @return
	 */
	public Map<Long, OrderSubscribeSettlementDto> getOrderSubscribeSettlement(List<Long> orderCodes);
}
